define(['app','js/init'],function(app,base) {
	var $ = Dom7;

	var app;

	
	function generateGUID(){
		var d = new Date().getTime();
		var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
			var r = (d + Math.random()*16)%16 | 0;
			d = Math.floor(d/16);
			return (c=='x' ? r : (r&0x7|0x8)).toString(16);
		});
		return uuid;
	}

	function getRandomInt(min, max)
	{
		return Math.floor(Math.random() * (max - min + 1)) + min;
	}

	//更新app文件
	function updateApp(id){

		var downUrl = base.base + base.appBase + '/df.m?id=';
		var fileTransfer = new FileTransfer();
		var source = downUrl + id ;
		var target = '/sdcard/Download/c.apk';   
		
		
		//进度条容器
		var container = $('.progressbar-load-hide');
		app.f7.showProgressbar(container, 0);
		fileTransfer.onprogress = function(progressEvent) {
			if (progressEvent.lengthComputable) {
			  app.f7.setProgressbar(container,(progressEvent.loaded / progressEvent.total)*100);
			}
		};
		
		
		var trustAllHosts = true;
        //这个方法就是执行下载apk的方法 参数一定要写对 上面有对应的参数 自行查看 就不做讲解了
        fileTransfer.download(
			source, 
			target, 
			function(entry){
			//当下载成以后同过这个cordova方法你将打开你下载的最新app 固定格式 不做讲解 如果想知道cordova.plugins.fileOpener2插件的其他用法，可以看官方给的api
				cordova.plugins.fileOpener2.open(
					target,
					'application/vnd.android.package-archive'
				);
				app.f7.hideProgressbar(container);
			}, 
			function(error){
			    //当apk下载失败做的操作
				app.f7.addNotification({
					message: '更新文件下载失败，当前版本未能升级',
					hold   : 5000
				});
				app.f7.hideProgressbar(container);
			}, 
			trustAllHosts, 
			{}
		);
		
		
		
		//app.f7.showPreloader('更新文件中...')
        //onprogress 是fileTransfer的属性   他是通过回调函数来更新下载进度的
        
	}

	//检查更新方法
	function checkUpdate(c){

		app = c;		
		//检查更新地址
		var url = base.base + base.appBase + '/gpv.m';		
		
		var versionCode = 10000;
		if(AppVersion && AppVersion.build){
			versionCode = AppVersion.build
		}
		
			
		$.ajax({
			url	: url,
			data: {platform_id:'1'},
			success:function(data){

				if(data){
					data = data?JSON.parse(data):{};
					if(data.status==='success'){
						var _data = data.data;

						if(versionCode < _data.version_number){
						//检测到更新时，提示用户是否升级
							var txt = '发现新版本,是否更新?</br>当前版本: '+app.getCurrentVersion()+
								'</br>最新版本: ' + _data.version_code +
								'</br>发布时间: ' + _data.createTime +
								'</br>更新内容: ' 
							app.f7.confirm(
								txt,
								'版本升级',
								//确定更新
								function(){
								  updateApp(_data.archiveid);
								}
								,
								//取消更新
								function(){
									app.f7.addNotification({
										message: '您取消了系统升级，可以在需要的时候手动升级到最新版本',
										hold   : 5000
									});
								}
							)
															
						}
					}
				}
			}
		})			
			
		
		
	}

	

	return {
		generateGUID: generateGUID,
		getRandomInt: getRandomInt,		
		checkUpdate : checkUpdate
	};
});